// 导入模块
import Vue from 'vue'
import Router from 'vue-router'
import store from '../store'

Vue.use(Router)

// 引入页面组件路由
import Login from '../views/login/index'
import Register from '../views/login/register.vue'
import Home from '../views/home'

import Find from '../views/find'
import Collect from '../views/collect'
import Me from '../views/me'
import notFound from '../views/common/notFound'

import Detail from '../views/detail'

// 路由实例化 和 路由模式指定 路由配置
const meta = {noLogin: true}
// 路由实例化
const router= new Router({
    // 路由模式
    mode:'history',

    // 路由配置
    routes:[
        // 默认路由,重定向，
        {path:'/',redirect:'/login'},
        {path:'/login',component:Login,meta},
        {path:'/register',component:Register, meta},
        {path:'/home',component:Home},
        {path:'/find',component:Find},
        {path:'/collect',component:Collect},
        {path:'/me',component:Me},
        {path:'/detail',component:Detail},

        // 如果输入不存在地址，则到这个地址
        {path:'*',component:notFound,meta}
    ]
})

router.beforeEach(function(to, from, next) {

    // 判断要去的页面是否需要登录 -- 取meta值
    let noLogin = to.meta.noLogin
    // 如果不需要登录，那么直接跳转业务
    if (noLogin) {
        next()
    } else {
        // 如果需要登录，先取缓存数据，然后判断缓存数据是否存在
        // let token = sessionStorage.getItem('token')
        // 应该取vuex中的数据才是正式业务的做法 -- 因为是全局注入了store才有的this.$store，this.$store实际上就是store模块实例对象
        // 所以可以直接引入store模块，直接使用它的方法
        // 因为这里是使用vuex数据，所以登录的时候，需要把token数据缓存到vuex中去
        const token = store.getters['common/getToken']

        // 如果存在则执行跳转业务，否则重定向到登录页面--/login
        if (!!token) {
            next()
        } else {
            // 执行重定向
            next('/login')
        }
    }
})
// 导出
export default router